﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Security.Cryptography;
using DevComponents.DotNetBar.Controls;
using DevComponents.DotNetBar;
using QLTuyenXe.BLL;
using QLTuyenXe.DAL;
using QLTuyenXe.DAO;
using QLTuyenXe.library;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
//namespace System.Globalization;

using System.Globalization;

namespace QLTuyenXe.library
{
    class XuLyDL
    {
        // Chống lại SQL Injection
        public String Injection(String unsafeString)
        {
            String safeString = "";

            //DROP
            while (unsafeString.ToLower().Contains("drop"))
            {
                unsafeString = unsafeString.Remove(unsafeString.ToLower().IndexOf("drop"), 4);
            }

            //Tên bảng dữ liệu trong CSDL
            while (unsafeString.ToLower().Contains("tbloaisach"))
            {
                unsafeString = unsafeString.Remove(unsafeString.ToLower().IndexOf("tbloaisach"), 10);
            }
            while (unsafeString.ToLower().Contains("tbsach"))
            {
                unsafeString = unsafeString.Remove(unsafeString.ToLower().IndexOf("tbsach"), 6);
            }

            //Ký hiệu chú thích /* và */ và --
            while (unsafeString.ToLower().Contains("/*"))
            {
                unsafeString = unsafeString.Remove(unsafeString.ToLower().IndexOf("/*"), 2);
            }
            while (unsafeString.ToLower().Contains("*/"))
            {
                unsafeString = unsafeString.Remove(unsafeString.ToLower().IndexOf("*/"), 2);
            }
            while (unsafeString.ToLower().Contains("--"))
            {
                unsafeString = unsafeString.Remove(unsafeString.ToLower().IndexOf("--"), 2);
            }

            //Ký tự nháy đơn (')
            for (int i = 0; i < unsafeString.Length; i++)
            {
                if (String.Compare(unsafeString[i].ToString(), "'") == 0)
                    safeString += "''";
                else
                    safeString += unsafeString[i].ToString();
            }
            unsafeString = safeString;
            safeString = "";

            //Ký tự phần trăm (%)
            for (int i = 0; i < unsafeString.Length; i++)
            {
                if (String.Compare(unsafeString[i].ToString(), "%") == 0)
                    safeString += "[%]";
                else
                    safeString += unsafeString[i].ToString();
            }
            unsafeString = safeString;
            safeString = "";

            //Ký tự gạch nối (_)
            for (int i = 0; i < unsafeString.Length; i++)
            {
                if (String.Compare(unsafeString[i].ToString(), "_") == 0)
                    safeString += "[__]";
                else
                    safeString += unsafeString[i].ToString();
            }
            unsafeString = safeString;
            safeString = "";

            return unsafeString;
        }
        //Loại bỏ khoảng trắng
        static string KhoangTrang(string s)
        {
            s = s.Trim();
            for (int i = 0; i < s.Length; i++)
            {
                if (s[i] == ' ')
                {
                    while (s[i + 1] == ' ')
                    {
                        s = s.Remove(i, 1);
                    }
                }
            }
            return s;
        }
       // public String InHoa(String chuỗi)
        //{
        //ToTitleCase
        //}
        //Ham mã hóa và gải mã
        public  string StringToBase64(string src)
        {
            // Chuyển chuỗi thành mảng kiểu byte.
            byte[] b = Encoding.Unicode.GetBytes(src);
            // Trả về chuỗi được mã hóa theo Base64.
            return Convert.ToBase64String(b);
        }

        // Giải mã một chuỗi Unicode được mã hóa theo Base64.
        public string Base64ToString(string src)
        {
            // Giải mã vào mảng kiểu byte.
            byte[] b = Convert.FromBase64String(src);
            // Trả về chuỗi Unicode.
            return Encoding.Unicode.GetString(b);
        }
        //

        //===========================================================================================================
        //Hàm Đọc tiền ( Mr.Tuyên K_54HTTT -Sưu tầm trên internet)
        // Dùng trước hiểu sau.(Không cần hiểu cũng được)
        public string DocTien(decimal number)
        {
            string s = number.ToString("#");
            string[] so = new string[] { "không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín" };
            string[] hang = new string[] { "", "nghìn", "triệu", "tỷ" };
            int i, j, donvi, chuc, tram;
            string str = " ";
            bool booAm = false;
            decimal decS = 0;
            //Tung addnew
            try
            {
                decS = Convert.ToDecimal(s.ToString());
            }
            catch
            {
            }
            if (decS < 0)
            {
                decS = -decS;
                s = decS.ToString();
                booAm = true;
            }
            i = s.Length;
            if (i == 0)
                str = so[0] + str;
            else
            {
                j = 0;
                while (i > 0)
                {
                    donvi = Convert.ToInt32(s.Substring(i - 1, 1));
                    i--;
                    if (i > 0)
                        chuc = Convert.ToInt32(s.Substring(i - 1, 1));
                    else
                        chuc = -1;
                    i--;
                    if (i > 0)
                        tram = Convert.ToInt32(s.Substring(i - 1, 1));
                    else
                        tram = -1;
                    i--;
                    if ((donvi > 0) || (chuc > 0) || (tram > 0) || (j == 3))
                        str = hang[j] + str;
                    j++;
                    if (j > 3) j = 1;
                    if ((donvi == 1) && (chuc > 1))
                        str = "một " + str;
                    else
                    {
                        if ((donvi == 5) && (chuc > 0))
                            str = "lăm " + str;
                        else if (donvi > 0)
                            str = so[donvi] + " " + str;
                    }
                    if (chuc < 0)
                        break;
                    else
                    {
                        if ((chuc == 0) && (donvi > 0)) str = "lẻ " + str;
                        if (chuc == 1) str = "mười " + str;
                        if (chuc > 1) str = so[chuc] + " mươi " + str;
                    }
                    if (tram < 0) break;
                    else
                    {
                        if ((tram > 0) || (chuc > 0) || (donvi > 0)) str = so[tram] + " trăm " + str;
                    }
                    str = " " + str;
                }
            }
            if (booAm) str = "Âm " + str;
            return str + "đồng chẵn";
        }
        //End hàm đọc tiền (Mr.Tuyên K_54HTTT)
        //============================================================================================================================
    //Ham kiem tra dang so
        public bool IsNumber(string pText)
        {
            Regex regex = new Regex(@"^[-+]?[0-9]*\.?[0-9]+$");
            return regex.IsMatch(ChuanHoa(pText));
        }

        // kiem tra họ tên
        //Ham kiem tra dang so
        public bool HoTen(string pText)
        {
            Regex regex = new Regex(@"^[a-zA-Z'-'\sáàảãạăâắằấầặẵẫậéèẻ ẽẹếềểễệêóòỏõọôốồổỗộ ơớờởỡợíìỉĩịđùúủũụưứửữựÀÁÂÃÈÉÊÌÍÒÓÔÕÙÚĂĐĨŨƠ ƯĂẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞ ỠỢỤỨỪỬỮỰỲỴÝỶỸửữựỵ ỷỹ]*$");
            return regex.IsMatch(ChuanHoa(pText));
        }
        //Chuan hóa và kiem tra ho ten
        public bool hoten_ok(string ht)
        {
            return HoTen(ChuanHoa(ht));
        }

        public bool hoten_ok1(string ht)
        {
            return HoTen(ChuanHoa1(ht));
        }

        //Ten nhóm
        public bool nhom(string pText)
        {
            Regex regex = new Regex(@"^[a-zA-Z'-'\sáàảãạăâắằấầặẵẫậéèẻ ẽẹếềểễệêóòỏõọôốồổỗộ ơớờởỡợíìỉĩịđùúủũụưứửữựÀÁÂÃÈÉÊÌÍÒÓÔÕÙÚĂĐĨŨƠ ƯĂẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞ ỠỢỤỨỪỬỮỰỲỴÝỶỸửữựỵ ỷỹ]*\.?[0-9a-zA-Z]+$");
            return regex.IsMatch(ChuanHoa(pText));
        }
        //Chuan hóa và kiem tra ho ten
        public bool tenNhom(string ht)
        {
            return nhom(ChuanHoa(ht));
        }

        //Ham kiem tra dang nhap
        public bool TenDN(string s)
        {
            Regex regex = new Regex(@"^[-+]?[0-9a-zA-Z]*\.?[0-9a-zA-Z]+$");
            return regex.IsMatch(ChuanHoa(s.Trim()));
        }
        //Chuẩn hóa
        public string ChuanHoa1(string ten)
        {
            string chuanhoa = "";
            ten = ten.Trim();
            for (int i = 0; i < ten.Length; i++)
            {
                if (ten[i] == ' ')
                {
                    while (ten[i + 1] == ' ')
                    {
                        ten = ten.Remove(i, 1);
                    }
                }
            }
            string kytudau="";
            string[] ht = ten.Split(' ');
            for (int i = 0; i < ht.Length; i++)
            {
                kytudau = ht[i].Substring(0, 1);
                chuanhoa += kytudau.ToUpper() + ht[i].Remove(0, 1) + " ";
            }
            return kytudau;
        }

        public string ChuanHoa(string ten)
        {
            TextInfo myText = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo;
            //string sample = "tHanh hOa group";
            string titleCase = myText.ToTitleCase(ten.ToLower());
            //Response.Write(titleCase);
            titleCase = titleCase.Trim();
            string kt = @"[\s]+";
            Regex rgx = new Regex(kt);
            string kq = rgx.Replace(titleCase," ");
            return kq;
        }
        // ma hóa pass
        public string GetMD5(string str)
        {
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            byte[] bHash = md5.ComputeHash(Encoding.UTF8.GetBytes(str));
            StringBuilder sbHash = new StringBuilder();
            foreach (byte b in bHash)
            {
                sbHash.Append(String.Format("{0:x2}", b));
            }
            return sbHash.ToString();
        }
        public bool soSanhChuoi(string a, string b)
        {
            if (a.CompareTo(b) == 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

    }
}
